{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# COMPSCI 389: Homework 3\n", "\n", "**Assigned**: March 26, 2024. **Due**: April 2, 2024 at 2:00pm Eastern. **Note**: Submissions received after 2:00pm Eastern on April 9, 2024 will receive no credit.\n", "\n", "**Submitting**: Upload your submission on Gradescope as a `.pdf`. Converting to a PDF can be a complicated process, and so we encourage you to test this process well in advance of the submission deadlines. We recommend converting to HTML, opening the HTML file in a browser, and then printing or exporting to a PDF from your browser. We do not recommend directly converting to a PDF, since this requires installing xelatex. To convert to HTML in VSCode, press `ctrl+shift+p` and type `export`, and you should see an option to export to HTML.\n", "\n", "**Note**: Keep your `.ipynb` file, as we may request it directly (via email).\n", "\n", "**Note**: When converting to a PDF file, ensure that all of your code cells have been executed. The results of these executions *must* be included in your submitted PDF." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Instructions\n", "\n", "Complete the questions below, replacing the blue text with your own answers (your answers do not need to remain in blue). Do **not** modify the green text. Try to answer the questions without consulting your notes or any online material. If you cannot, then consult your notes, and if absolutely necessary, consult course materials (slides, notebooks) and/or Wikipedia. Do **not** use other sources or tools like ChatGPT. Complete this part of the assignment on your own (do **not** work with others).\n", "\n", "After you have completed all of the questions, at the bottom of this assignment you will find a link to another notebook, `Homework 3 Solutions.ipynb`. This contains the solutions, and instructions for ensuring that your answers are correct and sufficient. Make another pass through your homework assignment, replacing the green text with descriptions of what you missed for each question, and providing the fixes necessary to make your answer correct. **The solutions file may include additional instructions, which may include additional content to respond to even if you got a question correct (e.g., additional reflection).** During this second stage where you are filling in your answers, replacing the green text, you may reference the solutions, work with others, and use any tools (including ChatGPT).\n", "\n", "You will only submit this assignment once after replacing both the blue and green text. You do not need to submit the assignment between the first and second passes. Grading for each question will be based on whether you followed this process, and arrived at the correct answers and have sufficient discussion/text in the end. Points will be deducted if you did not make a reasonable effort to answer the question initially, if your final answer remains incorrect, of if your answers were not sufficiently clear (so, write in full sentences with proper punctuation, and conveying your arguments clearly). Other than verifying that you made a reasonable initial effort for your initial answers (blue), points will **not** be deducted due to *initial* answers being incorrect. Hence, there is no reason to break the rules to obtain correct answers initially." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Part 1: Short Answer\n", "\n", "Answer the following questions with at least a few sentences, and no more than roughly one page of text." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 1. [10 points] Consider the plot created by the python code below. How many local minima does this function have? How many global minima? Roughly where are they (rough visual estimates from the plot are sufficient).\n", "\n", "Note: The function is \n", "$$\n", "f(x)=x^6 - 15x^5 + 85x^4 - 225x^3 + 274x^2 - 130x.\n", "$$" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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y1Lnubu7o2vXrli7di0SEhLKXCclJaWSz6ZiWrVqBXd3d3z99delpsr+9ddfuHz5Mvr37//Ea7z88stIT0/HxIkTkZOTU+4XYUV4eXkhODgY33//fanX98KFC9i7d2+pL8aqpk3UHv7rf8WKFXpdt1OnTjhw4ABOnjypS3yCg4NhZ2eHzz//HFZWVggJCXnsNbTJnhhfxNqFL7/66qtSx5cvXw6JRIK+ffsCAAYOHAipVIqPP/64zF/J2jYtr42LioqwevXqSsVW1dcDSp5vfHx8qSUr8vLysG7dugr9/DvvvANra2u88sorSEpKKnN/RXqXtO/zh997y5YtA4Ayn8n4+PhSsz+zsrLwww8/IDg4GJ6engBK2urhx966desTl6x4lIkTJ8Ld3R2zZs0qU0tWUFCAcePGQRCEUn9EaK1bt67UTM41a9aguLhY914Cqu87vjzltc2XX35Z6SUWDAV7fIxAixYt8Morr+C7775DcXExunTpgoMHD2Lr1q2YPXs2vL29deeGhIRg3759WLZsGby9veHv76/39FEAGDVqFCIiIrBy5UpcunQJo0aNgpOTE06dOoXvvvsOLi4u2LZtW4VW+3322WfRoUMHvPfee7h165ZubY3yxoxXrVqFjh07olmzZhg/fjzq1q2LpKQkhIeHIy4urtJrbVSEXC7HwoULMW7cOHTp0gUjR45EUlISVq5ciTp16uCtt9564jVatGiBpk2bYuvWrWjUqBFatmxZ6XgWL16Mvn37IjQ0FK+++iry8/Px5ZdfwsHBAXPnzq30dZ/E3t4enTt3xqJFi6BSqVCrVi3s3btXr94DoCTx+emnnyCRSHRDXzKZDO3bt8eePXvQtWvXJ65CGxwcDJlMhoULFyIzMxMKhQLdu3fXDQPr67///sP8+fPLHO/atSueffZZdOvWDR988AFu3bqFoKAg7N27Fzt37sT06dN1a7gEBATggw8+wCeffIJOnTph0KBBUCgUiIiIgLe3NxYsWID27dvDyckJY8aMwbRp0yCRSLBx48ZKDzVV9fWAkokDX331FUaPHo3IyEh4eXlh48aNFV6QtH79+ti0aRNGjhyJwMBA3crNgiDg5s2b2LRpE6RS6WPX3woKCsKYMWOwbt063XDeyZMn8f3332PgwIGlekuAkt7qV199FREREfDw8MB3332HpKQkrF+/XnfO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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "# Define the 6th order polynomial function\n", "def polynomial(x):\n", " # Example of a 6th order polynomial\n", " return x**6 - 15*x**5 + 85*x**4 - 225*x**3 + 274*x**2 - 130*x\n", "\n", "# Generate a range of x values\n", "x = np.linspace(-0.2, 5.4, 400)\n", "\n", "# Compute y values\n", "y = polynomial(x)\n", "\n", "# Plotting the function\n", "plt.plot(x, y)\n", "plt.xlabel('x')\n", "plt.ylabel('f(x)')\n", "plt.grid(True)\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***Initial Answer***\n", "\n", "Replace this text with your answer.\n", "\n", "---\n", "\n", "***Updated Answer***\n", "\n", "Replace this text with your response to the solution document.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2. [10 points] Is the use of one hot encodings more important for nominal or ordinal features? Why?\n", "\n", "***Initial Answer***\n", "\n", "Replace this text with your answer.\n", "\n", "---\n", "\n", "***Updated Answer***\n", "\n", "Replace this text with your response to the solution document.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 3. [10 points] Recall that in lecture we ran gradient descent on the least squares loss for the GPA data set (as a regression problem). We observed that we had to use extremely small step sizes for gradient descent to not cause the model parameters to diverge. Why was this? How did we fix this?\n", "\n", "***Initial Answer***\n", "\n", "Replace this text with your answer.\n", "\n", "---\n", "\n", "***Updated Answer***\n", "\n", "Replace this text with your response to the solution document.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 4. [10 points] You are working on a machine learning project to predict the sale prices of houses in a city. The data set includes features such as the number of bedrooms, number of bathrooms, square footage, and the age of the house. However, you notice that many entries in the 'number of bathrooms' column are missing.\n", "\n", "A) Explain the potential bias that could result from simply discarding rows with missing 'number of bathrooms' data when predicting house prices.\n", "\n", "B) As an alternative to discarding these rows, propose a method to handle these missing values (you may describe one that we covered in lecture). \n", "\n", "***Initial Answer***\n", "\n", "Replace this text with your answer.\n", "\n", "---\n", "\n", "***Updated Answer***\n", "\n", "Replace this text with your response to the solution document.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 5. [5 points] Consider the artificial neural network architecture described by the following code. How many hidden layers does this network have?\n", "\n", "```\n", "class Question4Network(nn.Module):\n", " def __init__(self, num_classes):\n", " super(FeedforwardNeuralNetModel, self).__init__()\n", " \n", " self.fc0 = nn.Linear(9, 10) \n", " self.fc1 = nn.Linear(hidden_size, 10) \n", " self.fc2 = nn.Linear(hidden_size, 10)\n", " self.fc3 = nn.Linear(hidden_size, 1) \n", "\n", " def forward(self, x):\n", " out = F.relu(self.fc0(x))\n", " out = F.relu(self.fc1(out))\n", " out = F.relu(self.fc2(out))\n", " out = self.fc3(out)\n", " return out\n", "```\n", "\n", "***Initial Answer***\n", "\n", "Replace this text with your answer.\n", "\n", "---\n", "\n", "***Updated Answer***\n", "\n", "Replace this text with your response to the solution document.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 6. [10 points] Consider the network from the previous question, but with the ReLU activation function removed (that is, no activation function). Why would this not be a reasonable parametric model to use?\n", "\n", "***Initial Answer***\n", "\n", "Replace this text with your answer.\n", "\n", "---\n", "\n", "***Updated Answer***\n", "\n", "Replace this text with your response to the solution document.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 7. [5 points] What values are computed during the forwards pass in reverse mode automatic differentiation (the form of automatic differentiation that we focussed on in lecture)?\n", "\n", "***Initial Answer***\n", "\n", "Replace this text with your answer.\n", "\n", "---\n", "\n", "***Updated Answer***\n", "\n", "Replace this text with your response to the solution document.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 8. [10 points] What values are computed during the backwards pass in reverse mode automatic differentiation?\n", "\n", "***Initial Answer***\n", "\n", "Replace this text with your answer.\n", "\n", "---\n", "\n", "***Updated Answer***\n", "\n", "Replace this text with your response to the solution document.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 9. [5 points] Consider an expression, $f(x)$, that includes a $\\sin(z)$ term (where $z$ may depend on $x$). In order to implement reverse mode automatic differentiation, what derivative do we need to work out? What values do we assume are known?\n", "\n", "***Initial Answer***\n", "\n", "Replace this text with your answer.\n", "\n", "---\n", "\n", "***Updated Answer***\n", "\n", "Replace this text with your response to the solution document.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 10. [10 points] Solve the derivative described in Question 9.\n", "\n", "***Initial Answer***\n", "\n", "Replace this text with your answer.\n", "\n", "---\n", "\n", "***Updated Answer***\n", "\n", "Replace this text with your response to the solution document.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 11. [10 points] In all of the network architectures that we discussed in lecture for computer vision tasks (tasks with images as input), convolutional layers were included as the first few layers of the network. Why are convolutional layers used at the start of the network (early hidden layers) rather than near the end of the network (later hidden layers, after some fully connected layers)?\n", "\n", "***Initial Answer***\n", "\n", "Replace this text with your answer.\n", "\n", "---\n", "\n", "***Updated Answer***\n", "\n", "Replace this text with your response to the solution document.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 12. [5 points] What is the purpose of max pooling layers in convolutional neural networks?\n", "\n", "***Initial Answer***\n", "\n", "Replace this text with your answer.\n", "\n", "---\n", "\n", "***Updated Answer***\n", "\n", "Replace this text with your response to the solution document.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The solutions can be found here: [https://people.cs.umass.edu/~pthomas/courses/COMPSCI_389_Spring2024/Homework%203%20Solutions.ipynb](https://people.cs.umass.edu/~pthomas/courses/COMPSCI_389_Spring2024/Homework%203%20Solutions.ipynb)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.7" } }, "nbformat": 4, "nbformat_minor": 2 }